home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Taifun / Taifun 045 (1988-02-15)(Ossowski, Stefan)(DE)(PD).zip / Taifun 045 (1988-02-15)(Ossowski, Stefan)(DE)(PD).adf / Iff2Pcs / Source / pzblit.c < prev    next >
C/C++ Source or Header  |  1988-01-20  |  1KB  |  58 lines

  1. #include "pz.h"
  2.  
  3. /* Various bitmap/blitter routines for IFF2PCS
  4. ** Ali Ozer, Nov 1987
  5. */
  6.  
  7. int InitBM (bm, h, w, d)
  8. struct BitMap *bm;
  9. int h, w, d; /* Height, width, depth, in bits, bits, and bitplanes */
  10. {
  11.   int cnt;
  12.  
  13.   w = ((w+7) >> 3) << 3;  /* We allocate upto 7 extra bits... */
  14.  
  15.   for (cnt = 0; cnt < d; cnt++) 
  16.     if ((bm->Planes[cnt] = (PLANEPTR) AllocRaster ((long)w, (long)h)) == NULL)
  17.       return (false);
  18.  
  19.   bm->BytesPerRow = w >> 3;   /* In bytes */
  20.   bm->Rows        = h;
  21.   bm->Depth       = d;
  22.   return (true);
  23. }
  24.  
  25.  
  26. void FreeBM (bm)
  27. struct BitMap *bm;
  28. {
  29.   int cnt;
  30.   long w = (bm->BytesPerRow) << 3;
  31.   long h = (bm->Rows);
  32.  
  33.   for (cnt = 0; cnt < bm->Depth; cnt++)
  34.     if (bm->Planes[cnt] != NULL) FreeRaster (bm->Planes[cnt], w, h);
  35. }
  36.   
  37.  
  38. CopyFromBMToBM (srcbm, srcx, srcy, destbm, destx, desty, sizex, sizey)
  39. struct BitMap *srcbm, *destbm;
  40. int srcx, srcy, destx, desty, sizex, sizey;
  41. {
  42.   /* The "c0" indicates copy; the "ff" indicates include all planes */
  43.   BltBitMap (srcbm,  (long)srcx, (long)srcy, 
  44.              destbm, (long)destx, (long)desty,
  45.              (long)sizex, (long)sizey, 0x00c0L, 0x00ffL, NULL);  
  46. }
  47.  
  48.  
  49. XORFromBMToBM (srcbm, srcx, srcy, destbm, destx, desty, sizex, sizey)
  50. struct BitMap *srcbm, *destbm;
  51. int srcx, srcy, destx, desty, sizex, sizey;
  52. {
  53.   BltBitMap (srcbm,  (long)srcx, (long)srcy, 
  54.              destbm, (long)destx, (long)desty,
  55.              (long)sizex, (long)sizey, 0x0060L, 0x00ffL, NULL);  
  56. }
  57.  
  58.